package br.com.minhascontas.DAO;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import br.com.minhascontas.model.ItemGrupo;

public class ItemGrupoDAO extends SQLiteOpenHelper {

	private static int DATABASE_VERSION = 2;
	private static final String DATABASE = "minhasContas";
	private static String ITEMGRUPO_TABLE_NAME = "itemGrupo";

	public ItemGrupoDAO(Context context) {
		super(context, DATABASE, null, DATABASE_VERSION);

	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
	}

	private ItemGrupo load(Cursor c) {

		ItemGrupo itemGrupo = new ItemGrupo();

		itemGrupo.setId(c.getLong(0));
		itemGrupo.setNome(c.getString(1));
		itemGrupo.setNomeGrupo(c.getString(4));

		return itemGrupo;
	}

	public void inserirItemGrupo(ItemGrupo itemGrupo) {
		ContentValues values = new ContentValues();
		int idGrupo = (int) (long) itemGrupo.getGrupo().getId();
		itemGrupo.setIdGrupo(idGrupo);
		values.put("nome", itemGrupo.getNome());
		values.put("idGrupo", itemGrupo.getIdGrupo());
		getWritableDatabase().insert(ITEMGRUPO_TABLE_NAME, null, values);
	}

	public void alterarItemGrupo(ItemGrupo itemGrupo) {
		ContentValues values = new ContentValues();
		int idGrupo = (int) (long) itemGrupo.getGrupo().getId();
		itemGrupo.setIdGrupo(idGrupo);
		values.put("nome", itemGrupo.getNome());
		values.put("idGrupo", itemGrupo.getIdGrupo());
		getWritableDatabase().update(ITEMGRUPO_TABLE_NAME, values, "id=?",
				new String[] { itemGrupo.getId().toString() });
	}

	public List<ItemGrupo> listarItemGrupo() {
		List<ItemGrupo> itemGrupos = new ArrayList<ItemGrupo>();

		String strSql = "select * from " + ITEMGRUPO_TABLE_NAME
				+ " INNER JOIN GRUPO ON ITEMGRUPO.IDGRUPO = GRUPO.ID;";

		Cursor c = getWritableDatabase().rawQuery(strSql, null);

		while (c.moveToNext()) {

			itemGrupos.add(load(c));
		}

		return itemGrupos;
	}

	public List<ItemGrupo> listarItemGrupoByGrupoId(int intIdGrupo) {
		List<ItemGrupo> itemGrupos = new ArrayList<ItemGrupo>();

		String strSql = "select * from "
				+ ITEMGRUPO_TABLE_NAME
				+ " INNER JOIN GRUPO ON ITEMGRUPO.IDGRUPO = GRUPO.ID WHERE grupo.id = "
				+ intIdGrupo + ";";
		Cursor c = getWritableDatabase().rawQuery(strSql, null);

		while (c.moveToNext()) {
			itemGrupos.add(load(c));
		}

		return itemGrupos;
	}

}
